
var es_no_habido;
var documentosConCreditoFiscal = new Array('101','105','106','107','108','112','113','114','150');
var excepciones= new Array('116','199','100');
$(function(){
    $('#DocumentoCompraAddForm').submit(function(){
        if($.inArray($('#DocumentoCompraCodigoDocumentoId').val(),excepciones)!= -1	){
                return true;
        }
        else{		
            vruc = $('#DocumentoCompraRucProveedor').val();
            if(	$('#DocumentoCompraRucProveedor').val().charAt(0) == 2 && 
                (vruc.length == 11) && 
                $.inArray($('#DocumentoCompraCodigoDocumentoId').val(),documentosConCreditoFiscal)== -1 &&
                $('#DocumentoCompraMunicipalidad').val()=='false'){
                    alerta('Documentos de Personas juridicas, solo se permite ingresar documentos con credito fiscal');
                    return false;
            }else {
                    return true;
            }
        }
     });     
    $('#DocumentoCompraConDetalle').change(function(){
        hasDetails($('#DocumentoCompraConDetalle').attr('checked'));	
    });
    $('#DocumentoCompraNumeroRetencion').setMask('***999999');
    $('#DocumentoCompraNumeroDocumento').setMask('*************');
        
   // $('#BtnGuardar').click(function(){es_agente_retension = "";});

    $('#addBoton').click(function(){
    	if(!$(this).is(':visible')){
    		return false;
    	}    	
                
        if($('#DocumentoCompraCodigoDocumentoId').val()=="") {
            alerta("Ingrese el Codigo del Documento");
            return false;
        }           
        if(es_no_habido==1)
            return false;
        
        if($('#DocumentoCompraRucProveedor').val()=="") { 
             alerta("Ingrese Ruc del Proveedor");return false;} 
          
    	var thtml;

      	var div;

      	if($("#DescripcionDetalle").val() != ''){
          numDetalle++;
          puntero = numDetalle;
          var Prefix = "data[DocumentoCompraDetalle]["+numDetalle+"]";
          thtml='<table><tr><td width="60" id="tdCantidad'+numDetalle+'" align="right">';
          thtml= thtml+ $("#CantidadDetalle").val();          
          thtml= thtml+ '</td><td width="431" id="tdDescripcion'+numDetalle+'">';
          thtml= thtml+ $("#DescripcionDetalle").val();          
          thtml= thtml+ '</td><td width="64" id="tdValorUnitario'+numDetalle+'" align="right">';
          thtml= thtml+ precision($("#ValorUnitarioDetalle").val());
          thtml= thtml+ '</td><td width="73" id="tdValorTotal'+numDetalle+'" align="right">';
          thtml= thtml+ precision($("#ValorTotalDetalle").val());
          thtml= thtml+ '</td><td width="72" id="tdImpuestos'+numDetalle+'" align="right">';
          thtml= thtml+ precision($("#ImpuestosDetalle").val());
          thtml= thtml+ '</td><td width="72" id="tdPercepcion'+numDetalle+'" align="right">';
          thtml= thtml+ precision($("#PercepcionDetalle").val());
	  thtml= thtml+ '</td><td width="70" id="tdImporteTotal'+numDetalle+'" align="right">';
          thtml= thtml+ precision($("#ImporteTotalDetalle").val());    
          thtml= thtml+'</td><td align="center">';
          thtml= thtml+'<input type="button" id="editar'+numDetalle+'" class="editarDetalle btnedit" value="" style="width:10px">&nbsp;';
          thtml= thtml+'<input type="button" id="delete'+numDetalle+'" class="deleteDetalle btnerase" value="" style="width:10px">&nbsp;';
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[descripcion_producto]" name="'+Prefix+'[descripcion_producto]">';          
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[cantidad]" name="'+Prefix+'[cantidad]">';
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[valor_unidad]" name="'+Prefix+'[valor_unidad]">';
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[valor_total]" name="'+Prefix+'[valor_total]">';
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[impuesto]" name="'+Prefix+'[impuesto]">';
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[importe_total]" name="'+Prefix+'[importe_total]">';
	  thtml= thtml+ '<input type="hidden" id="'+Prefix+'[ref_percepcion]" name="'+Prefix+'[ref_percepcion]">';		  
	  thtml= thtml+ '<input type="hidden" id="'+Prefix+'[ref_impuesto]" name="'+Prefix+'[ref_impuesto]">';		  
	  thtml= thtml+ '<input type="hidden" id="'+Prefix+'[percepcion]" name="'+Prefix+'[percepcion]">';	  
          thtml= thtml+ '<input type="hidden" id="'+Prefix+'[eliminado]" name="'+Prefix+'[eliminado]" value="0">';
          thtml= thtml+'</td></tr></table>';

          div = document.createElement('div');
          div.id='detalle'+numDetalle;
          div.style["position"]='relative';
          div.style["width"]='100%';

          document.getElementById('Detalle').appendChild(div);
          $("#detalle"+numDetalle).html(thtml);
          document.getElementById('detalle'+numDetalle).style["margin"]="0px";
          
          document.getElementById(Prefix+"[descripcion_producto]").value = $("#DescripcionDetalle").val();          
          document.getElementById(Prefix+"[cantidad]").value = $("#CantidadDetalle").val();
	  document.getElementById(Prefix+"[valor_unidad]").value = $("#ValorUnitarioDetalle").val(); //
	  document.getElementById(Prefix+"[valor_total]").value = $("#ValorTotalDetalle").val(); //
          document.getElementById(Prefix+"[impuesto]").value = $("#ImpuestosDetalle").val(); //
	  document.getElementById(Prefix+"[importe_total]").value = $("#ImporteTotalDetalle").val(); //
          document.getElementById(Prefix+"[ref_percepcion]").value = $("#RefPercepcionDetalle").val();
	  document.getElementById(Prefix+"[ref_impuesto]").value = $("#RefImpuestoDetalle").val();
	  document.getElementById(Prefix+"[percepcion]").value = $("#PercepcionDetalle").val();	  
          calcularTotales();          
	  $("#CantidadDetalle").val('');          
          $("#DescripcionDetalle").val('');	  
          $("#ValorUnitarioDetalle").val('0');
	  $("#ValorTotalDetalle").val('0');
          $("#ImpuestosDetalle").val('0');
	  $("#RefPercepcionDetalle").val('0');
	  $("#PercepcionDetalle").val('0');
	  $("#ImporteTotalDetalle").val('');
        } 
        else {
            alert("Ingrese una desripcion");
        }
        $('#CantidadDetalle').focus();
    });
	
    $('input:button.deleteDetalle').live('click',function(e){
        e.preventDefault();
        var value = $(this).attr('id').replace('delete','');
        document.getElementById('detalle'+value).style['display']="none";
        document.getElementById("data[DocumentoCompraDetalle]["+value+"][eliminado]").value = 1;
        if(puntero == value){
            document.getElementById("addBoton").style["display"]="block";
            document.getElementById("updateBoton").style["display"]="none";
        }
	calcularTotales();        
	_reindex_inputs();
    });
	
    $('input:button.editarDetalle').live('click',function(e){
        var value = $(this).attr('id').replace('editar','');
        var Prefix = "data[DocumentoCompraDetalle]["+value+"]";				
       
        $("#CantidadDetalle").val(document.getElementById(Prefix+"[cantidad]").value);        
        $("#DescripcionDetalle").val(document.getElementById(Prefix+"[descripcion_producto]").value);        
        $("#ValorUnitarioDetalle").val(document.getElementById(Prefix+"[valor_unidad]").value);
        $("#ValorTotalDetalle").val(document.getElementById(Prefix+"[valor_total]").value);
        $("#ImpuestosDetalle").val(document.getElementById(Prefix+"[impuesto]").value);
        $("#PercepcionDetalle").val(document.getElementById(Prefix+"[percepcion]").value);
        $("#RefPercepcionDetalle").val(document.getElementById(Prefix+"[ref_percepcion]").value);
        $("#RefImpuestoDetalle").val(document.getElementById(Prefix+"[ref_impuesto]").value);
        $("#ImporteTotalDetalle").val(document.getElementById(Prefix+"[importe_total]").value);
        document.getElementById("addBoton").style["display"]="none";
        document.getElementById("updateBoton").style["display"]="block";
        puntero = value;
        $('#CantidadDetalle').focus();
        _reindex_inputs();
     });

    $('#updateBoton').click(function(){
        if(!$(this).is(':visible')){
            return false;
        }        
        
        var value = puntero;
        var Prefix = "data[DocumentoCompraDetalle]["+value+"]";
        
        document.getElementById(Prefix+"[descripcion_producto]").value = $("#DescripcionDetalle").val();        
        document.getElementById(Prefix+"[cantidad]").value = $("#CantidadDetalle").val();
        document.getElementById(Prefix+"[valor_unidad]").value = $("#ValorUnitarioDetalle").val();
        document.getElementById(Prefix+"[valor_total]").value = $("#ValorTotalDetalle").val();
        document.getElementById(Prefix+"[impuesto]").value = $("#ImpuestosDetalle").val();
        document.getElementById(Prefix+"[importe_total]").value = $("#ImporteTotalDetalle").val();
        document.getElementById(Prefix+"[ref_percepcion]").value = $("#RefPercepcionDetalle").val();
        document.getElementById(Prefix+"[ref_impuesto]").value = $("#RefImpuestoDetalle").val();
        document.getElementById(Prefix+"[percepcion]").value = $("#PercepcionDetalle").val();

        document.getElementById("tdCantidad"+value).innerHTML = $("#CantidadDetalle").val();        
        document.getElementById("tdDescripcion"+value).innerHTML = $("#DescripcionDetalle").val();        
        document.getElementById("tdValorUnitario"+value).innerHTML = $("#ValorUnitarioDetalle").val();
        document.getElementById("tdValorTotal"+value).innerHTML = $("#ValorTotalDetalle").val();
        document.getElementById("tdImpuestos"+value).innerHTML = $("#ImpuestosDetalle").val();
        document.getElementById("tdImporteTotal"+value).innerHTML = $("#ImporteTotalDetalle").val();
        document.getElementById("tdPercepcion"+value).innerHTML = $("#PercepcionDetalle").val();
        
        $("#CantidadDetalle").val('');        
        $("#DescripcionDetalle").val('');        
        $("#ValorUnitarioDetalle").val('0');
        $("#ValorTotalDetalle").val('0');
        $("#ImpuestosDetalle").val('0');
        $("#PercepcionDetalle").val('0');
        $("#ImporteTotalDetalle").val('0');
        $("#RefPercepcionDetalle").val('0');		        
		  
        document.getElementById("addBoton").style["display"]="block";
        document.getElementById("updateBoton").style["display"]="none";
        $('#CantidadDetalle').focus();
        calcularTotales();                
        _reindex_inputs();
      });
    
    $('#ValorUnitarioDetalle, #CantidadDetalle').change(function(){
        var vu = parseFloat($('#ValorUnitarioDetalle').val());
        var cant = parseFloat($('#CantidadDetalle').val());
        var precio_con_igv = $("#DocumentoCompraPrecioConIgv").attr('checked');
        if($('#RefImpuestoDetalle').val() != '') $('#RefImpuestoDetalle').val(ref_impuesto);

        if(!(isNaN(vu) || isNaN(cant))){			
            if(jQuery.inArray($('#DocumentoCompraCodigoDocumentoId').val(),documentosConCreditoFiscal)==-1){
                    $('#RefImpuestoDetalle').val(0.00);
            }
            var igv 	= parseFloat($('#RefImpuestoDetalle').val()-0)/100;			
            var ref_perc 	= parseFloat($('#RefPercepcionDetalle').val()-0)/100;			
            if(precio_con_igv){
                    var it 	= vu*cant;				
                    vu = it/(cant*(1+igv+(1+igv)*ref_perc));
                    $('#ValorUnitarioDetalle').val(precision(vu, 4));				
            }
            var vt 		= vu*cant;
            var impT1 	= vt*(1+igv);
            var imp 	= impT1 - vt; //impuesto		
            var percT 	= 0;			
            if(impT1 > _MIN_PERCEPCION){
                    percT 	= impT1*ref_perc;
            }										
            var impT 	= percT + impT1;

            $('#PercepcionDetalle').val(precision(percT));
            $('#ValorTotalDetalle').val(precision(vt));
            $('#ImpuestosDetalle').val(precision(imp));
            if($('#ImporteTotalDetalle').attr('tag') != '1'){
                    $('#ImporteTotalDetalle').val(precision(impT));		
            }				
            $('#ImporteTotalDetalle').attr('tag','0');
        } else {
            $('#ValorTotalDetalle').val('0');
            $('#ImpuestosDetalle').val('0');
            $('#ImporteTotalDetalle').val('0');
        }
        $('#ValorUnitarioDetalle').val(precision(vu,4));
        $('#CantidadDetalle').val(precision(cant)); 
      });

    $('#DocumentoCompraSumaRetencion, #DocumentoCompraTasaDetraccion, #DocumentoCompraSumaDetraccion').change(function(){this.value = precision(this.value);});

    $('#RefPercepcionDetalle').change(function(){
        var percepcion = parseFloat($('#RefPercepcionDetalle').val());
        if(!isNaN(percepcion)){
            var valor_total = $('#ValorTotalDetalle').val()-0;
            var impuesto = $('#ImpuestosDetalle').val()-0;
            var ref_percepcion = $('#RefPercepcionDetalle').val()-0;
            var percepcion =(valor_total+impuesto)*ref_percepcion/100;
            $('#PercepcionDetalle').val(precision(percepcion));
            $('#ImporteTotalDetalle').val(precision(percepcion + valor_total + impuesto));
        } else{
            $('#RefPercepcionDetalle').val('0');
        }
    });
    
    $('#DocumentoCompraRucProveedor')	
        .buscarProveedor({
            'trigger':'change',	
            'modal'			:	true,
            'url':_WEB_ROOT+'Proveedores/buscar',
            'clear_results':false, 
            'clear_on_error':false,
            'aditional_parameters':{'tipo':'codigo_proveedor', 'padron' : true},
            'search_window_title':'Buscar Proveedor',
            'search_window_display_fields':{
                'display':'[Tercero.ruc] Tercero.razon_social',
                'title':''
            },
            'minlength':8,
            'fill_fields':{						
                    'DocumentoCompraProveedorId':'Proveedore.id',				
                    'DocumentoCompraRucProveedor':'Tercero.ruc',
                    'DocumentoCompraNombreProveedor':'Tercero.razon_social',
                    'DocumentoCompraDireccionProveedor':'Tercero.direccion',
                    'DocumentoCompraLocProveedor':'Proveedore.direccion2'
            },
            'callback':function(data){                            
                if(data.error){
                        alerta('ADVERTENCIA: Proveedor no registrado');                                
                } else {                                     
                if ($('#DocumentoCompraEsAgenteRetension').val() == 'true')
                    {$('#idReten').hide();$('#DocumentoCompraSumaRetencion, #DocumentoCompraNumeroRetencion').val('');alerta('Proveedor Exonerado a Retencion');}
                else if (validarRuc($('#DocumentoCompraRucProveedor').val())== true)
                        calcularTotales();                    
              }
            }
   });
   
    $('#DocumentoCompraCodigoDocumentoId')	
        .after('<strong id="codigo_documento_descripcion">'+codigo_documento+'</strong>')
        .buscarProveedor({
                'trigger':'change',	
                'modal'	 :	true,
                'url':_WEB_ROOT+'CodigoDocumentos/buscar',
                'aditional_parameters':{'tipo':'codigo_documento'},
                'search_window_title':'Buscar Documento',
                'search_window_display_fields':{
                        'display':'[CodigoDocumento.id] CodigoDocumento.descripcion',
                        'title':''
                },
                'minlength':3,
                'fill_fields':{						
                        'DocumentoCompraCodigoDocumentoId':'CodigoDocumento.id',				
                        'CodigoDocumentoDescripcion':'CodigoDocumento.descripcion',			
                        'codigo_documento_descripcion':'CodigoDocumento.descripcion'				
                },
                'callback':function(data){
                        if(data !=''){
                                if(data.CodigoDocumento.id == "150"){
                                        $("#idDua").show();
                                        $("#textDua").show();		
                                        $("#DocumentoCompraNumeroDua").addClass("notEmpty");
                                        $("#DocumentoCompraAnyoDua").addClass("notEmpty");	
                                        $("#DocumentoCompraValoFobDua").addClass("notEmpty");	
                                        $("#DocumentoCompraAduanaCodigo").addClass("notEmpty");	
                                } else{
                                        $("#idDua").hide();
                                        $("#textDua").hide();	
                                        $("#DocumentoCompraNumeroDua").removeClass("notEmpty");
                                        $("#DocumentoCompraAnyoDua").removeClass("notEmpty");	
                                        $("#DocumentoCompraValoFobDua").removeClass("notEmpty");	
                                        $("#DocumentoCompraAduanaCodigo").removeClass("notEmpty");								
                                }


            if( $.inArray(data.CodigoDocumento.id, docRetencion) != -1 ){
                    cent = 1;                           
            } else {
                    cent = 0; 
            }                                        

            if(data.CodigoDocumento.id == "102"){
                    $("#numero_exoneracion").show();
                    $("#ingreso_almacen").hide();
                    $("#DocumentoCompraIngreso").attr("checked", false);
                    $("#DocumentoCompraPrecioConIgv").attr("checked", false);
            } else {
                    $("#ingreso_almacen").show();
                    $("#numero_exoneracion").hide();
                    $("#DocumentoCompraIngreso").attr("checked", false);	
                    $("#DocumentoCompraPrecioConIgv").attr("checked", false);
            }

            if(data.CodigoDocumento.id == "107" || data.CodigoDocumento.id == "108"){
                    $("#is_nota").show();
            } else {
                    $("#is_nota").hide();
            }
            _reindex_inputs();
            validar();
        }
    }});

    $('#DocumentoCompraCodigoDocumentoRefId')	
            .after('<strong id="codigo_documento_ref_descripcion">'+codigo_documento_ref+'</strong>')
            .buscarProveedor({
                    'trigger':'change',	
                    'modal'	 :	true,
                    'url':_WEB_ROOT+'CodigoDocumentos/buscar',
                    'aditional_parameters':{'tipo':'codigo_documento'},
                    'search_window_title':'Buscar Documento',
                    'search_window_display_fields':{
                            'display':'[CodigoDocumento.id] CodigoDocumento.descripcion',
                            'title':''
                    },
                    'minlength':3,
                    'fill_fields':{						
                            'DocumentoCompraCodigoDocumentoRefId':'CodigoDocumento.id',				
                            'CodigoDocumentoRefDescripcion':'CodigoDocumento.descripcion',
                            'codigo_documento_ref_descripcion':'CodigoDocumento.descripcion'
                    }});			

    $('#ImporteTotalDetalle').change(function(){
            $('#ImporteTotalDetalle').attr('tag','1');
            var it 		= parseFloat(this.value);
            var cant 	= parseFloat($('#CantidadDetalle').val());
            var ref_perc    = parseFloat($('#RefPercepcionDetalle').val()-0)/100;
            var igv 	= parseFloat($('#RefImpuestoDetalle').val()-0)/100;

            if($('#ExoneradoIgvDetalle').val() == 'true'){
                    igv = 0;
            }
            var factor = 1;
            if($('#DocumentoCompraPrecioConIgv').attr('checked')){
                    factor = 1+igv;
            }
            $('#ValorUnitarioDetalle').val(precision(factor*it/(cant*(1+igv+(1+igv)*ref_perc)),4));
            this.value = precision(this.value);
            $('#ValorUnitarioDetalle').change();		
    });

    $('#ActividadeCodigo')	
        .after('<strong id="actividad_descripcion">'+actividad_descripcion+'</strong>')
        .buscarProveedor({
            'trigger'           :	'change',
            'clear_on_empty'    :	true,
            'clear_on_error'    :	true,
            'modal'             :	true,
            'width'             :       700,
            'url'               :	_WEB_ROOT+'actividades/buscar',
            'aditional_parameters'	:	{
                'tipo':'actividad',
                'join':'inner'
            },
            'search_window_title'   :   'Buscar Actividad',
            'search_window_display_fields':{
                'display'	:	'[Actividade.codigo] Actividade.descripcion',
                'title'		:	''
            },
            'minlength'         :	3,
            'fill_fields'	:{
                'DocumentoCompraActividadId' :	'Actividade.id',
                'ActividadeCodigo'           :	'Actividade.codigo',
                'ActividadeDescripcion'      :	'Actividade.descripcion',
                'actividad_descripcion'      :	'Actividade.descripcion'
            },
            'callback':function(data){
                    if(data.error){
                            alerta('no hay datos');
                    }
            }
        });

    $('#DocumentoCompraNumeroDocumentoRef')			
            .buscarProveedor({
                'trigger':'autocomplete',
                'url':_WEB_ROOT+'documento_compras/buscar2',
                'aditional_parameters':{'tipo':'documento_compra', 'codigo_documento_id':function(){return $('#DocumentoCompraCodigoDocumentoRefId').val();}},
                'search_window_title':'Buscar Documentos de Compra',
                'search_window_display_fields':{
                        'display':'[DocumentoCompra.numero_documento] DocumentoCompra.nombre_proveedor',
                        'title':''
                },
                'minlength':3,
                'fill_fields':{
                        'DocumentoCompraNumeroDocumentoRef'	:	'DocumentoCompra.numero_documento',
                        'DocumentoCompraDocumentoRefId'		:	'DocumentoCompra.id'
                }
            });

    $('#DocumentoCompraNumeroDias').bind('change.sumarFecha', function(){
            if(!isNaN(this.value-0) && this.value>0){    
                    numero = parseInt(this.value);
                    this.value = numero;
                    actual = $.datepicker.parseDate('dd/mm/yy', $('#DocumentoCompraFechaEmision').val());
                    nueva = new Date(actual.setDate(actual.getDate()+numero));
                    $('#DocumentoCompraFechaEntrega').val($.datepicker.formatDate('dd/mm/yy', nueva));
            }else{
                    this.value=0;
                    $('#DocumentoCompraFechaEntrega').val($('#DocumentoCompraFechaEmision').val());
            }
        });

    $('#DocumentoCompraFechaEntrega, #DocumentoCompraFechaEmision').bind({
            'change.cambiar_fecha focusout.cambiar_fecha':function(e){			
                fe = $('#DocumentoCompraFechaEmision').val().to_date('dd/mm/yy').getTime();
                if($('#DocumentoCompraFechaEntrega').val()!=''){				
                        fp = $('#DocumentoCompraFechaEntrega').val().to_date('dd/mm/yy').getTime();
                        var dia=1000*60*60*24;
                        diferencia = Math.ceil((fp-fe)/(dia));
                }else {
                        diferencia = 0;
                        $('#DocumentoCompraFechaEntrega').val($('#DocumentoCompraFechaEmision').val());
                        if($('#DocumentoCompraFechaPago').val()==''){
                                $('#DocumentoCompraFechaPago').val($('#DocumentoCompraFechaEmision').val());					
                        }
                }
                $('#DocumentoCompraNumeroDias').val(diferencia);
            }
    }); 

    $('#DocumentoCompraPrecioConIgv').click(function(){
            $('#Detalle').children('div').each(function(){
                    var valor_unitario	= $(this).find('input[id*=valor_unidad]').val()-0;			
                    var cantidad 		= $(this).find('input[id*=cantidad]').val()-0;
                    var valor_total 	= $(this).find('input[id*=valor_total]').val()-0;			
                    var igv 			= ($(this).find('input[id*=ref_impuesto]').val()-0)/100;			
                    var ref_percepcion	= ($(this).find('input[id*=ref_percepcion]').val()-0)/100;			

                    if( $('#DocumentoCompraPrecioConIgv').attr('checked')){				
                            valor_unitario = valor_total/(cantidad*(1+igv+(1+igv)*ref_percepcion));
                    } else {
                            valor_unitario = ($(this).find('input[id*=importe_total]').val()-0)/cantidad;
                    }			
                    valor_total = valor_unitario*cantidad;
                    impuestos 	= valor_total*igv;
                    percepcion 	= 0;
                    if((valor_total+impuestos) > _MIN_PERCEPCION){
                            percepcion = (valor_total+impuestos)*ref_percepcion;	
                    }							
                    importe_total = valor_total	+	impuestos	+	percepcion;			
                    $(this).find('input[id*=valor_unidad]').val(precision(valor_unitario));
                    $(this).find('input[id*=valor_total]').val(precision(valor_total));
                    $(this).find('input[id*=impuesto]:eq(0)').val(precision(impuestos));
                    $(this).find('input[id*=percepcion]:eq(0)').val(precision(percepcion));
                    $(this).find('input[id*=importe_total]').val(precision(importe_total));

                    $(this).find('td[id*=tdValorUnitario]').html(precision(valor_unitario,4));
                    $(this).find('td[id*=tdValorTotal]').html(precision(valor_total));
                    $(this).find('td[id*=tdImpuesto]').html(precision(impuestos));
                    $(this).find('td[id*=tdPercepcion]').html(precision(percepcion));
                    $(this).find('td[id*=tdImporteTotal]').html(precision(importe_total));			
            });	
            calcularTotales(); // rev. clear detall	
    });

    $('#DocumentoCompraExoneradoIgv').change(function(){
            if($(this).attr('checked')){
                    ref_impuesto = 0;	
            } else {
                    ref_impuesto = IGVFecha($('#DocumentoCompraFechaEmision').val())*100;
            }			
    });

    $('#DocumentoCompraRucProveedor').blur(function(){	//Validador de RUC
        var cadena  = $('#DocumentoCompraRucProveedor').val().length;
        var coddoc  = $('#DocumentoCompraCodigoDocumentoId').val();

        if(coddoc=='199'||coddoc=='104'){
            if(cadena!='8' && cadena!='11'){
                alerta('El numero debe tener 8 digitos para DNI 11 digitos para RUC','Error',3000);	
                $('#DocumentoCompraRucProveedor').val('');
                $('#DocumentoCompraProveedorId, #DocumentoCompraNombreProveedor, #DocumentoCompraDireccionProveedor, #DocumentoCompraLocProveedor').val('');
                $('#DocumentoCompraRucProveedor').focus();
            }		
        }
        else {
            if(cadena=='11'){
                $ruc=validarRuc($('#DocumentoCompraRucProveedor').val());			
                if($ruc==false){				
                        alerta('El RUC no es válido','Aviso',3000);
                        $('#DocumentoCompraRucProveedor').val('');
                        $('#DocumentoCompraProveedorId').val('');
                        $('#DocumentoCompraNombreProveedor').val('');
                        $('#DocumentoCompraDireccionProveedor').val('');
                        $('#DocumentoCompraRucProveedor').focus();
                }
            }else{
                alerta('El numero debe tener 11 digitos para el RUC','Error',3000);
                $('#DocumentoCompraRucProveedor').val('');
                $('#DocumentoCompraProveedorId').val('');
                $('#DocumentoCompraNombreProveedor').val('');
                $('#DocumentoCompraDireccionProveedor').val('');
                $('#DocumentoCompraRucProveedor').focus();
            }		
        }


    });
    
    if((jQuery.inArray(opc , ['0','1', '2','3']) != -1)||(!$('#DocumentoCompraConDetalle').attr('checked'))){
            $('#OrdenCompraNumeroControl').attr('readonly',true);			 
            $('#DocumentoCompraSumaImporteTotal').change(function(){
                igv = ref_impuesto;
                if(jQuery.inArray($('#DocumentoCompraCodigoDocumentoId').val(),documentosConCreditoFiscal)==-1){
                        igv = 0;	
                } 			
                var suma_importe 	= this.value;
                var suma_valor 		= suma_importe*100/(igv+100);
                var impuesto 		= 0;
                var impuesto 		= suma_importe - suma_valor;

                $('#DocumentoCompraSumaPercepcion').val('0.00');
                $('#DocumentoCompraSumaImpuesto').val(precision(impuesto));
                $('#DocumentoCompraSumaValorTotal').val(precision(suma_valor));
                $('#DocumentoCompraSumaImporteTotal').val(precision(suma_importe));
                evaluandoRetencion(suma_importe);
            });
            $('#DocumentoCompraSumaImporteTotal').attr('readonly', false);
            hasDetails(false);
            $('.checkDetail').show();				
    } 
    else {		
            $('.checkDetail').hide();
            hasDetails(true);
    }    
    $('#DocumentoCompraNumeroDocumento,#DocumentoCompraNumeroRetencion').bind('change.completarNumero',completarNumero);
    $('#DocumentoCompraSerie').bind('change.completarSerie',completarSerie);
    $('#DocumentoCompraDocumento').bind('change.completarDocumento',completarDocumento);
    $('#DocumentoCompraRucProveedor').change(function()
        {es_agente_retension =""; 
            if($(this).val() == '') {  
                $('#idReten').hide();
                $('#textReten').hide();
                $('#DocumentoCompraSumaRetencion, #DocumentoCompraNumeroRetencion').val('');}
            }
        );

    $('#DocumentoCompraRetencionActive').click(function(){ 
     if($('#DocumentoCompraRetencionActive:checked').val())
         $('#DocumentoCompraSumaRetencion').attr('readonly',false);
     else
         $('#DocumentoCompraSumaRetencion').attr('readonly',true);
    });
    
    $('#DocumentoCompraConDetalle').change();
    //$('#DocumentoCompraFechaEntrega').change();
    $('#moneda_simbolo').html($("#DocumentoCompraMonedaId option:selected").text());
});

function completarNumero(){    
    if($(this).val().length == 4) 
        {alerta('Ingrese 5 digitos en el codigo');return false;}
    var num = $(this).val()+'';
    if (num.length < 13){
        num = num.substr(0,4)+'0'.repeat(13-num.length)+num.substr(4);
    } else {
        num = num.substr(0,13);
    }
    $(this).val(num);
}
function completarSerie(){    
    var num = $(this).val()+'';
    if (num.length < 4){
        num = '0'.repeat(4-num.length)+num.substr(4)+num.substr(0,4);
    } else {
        num = num.substr(0,4);
    }
    $(this).val(num);
}
function completarDocumento(){    
    var num = $(this).val()+'';
    if (num.length < 9){
        num = '0'.repeat(9-num.length)+num.substr(9)+num.substr(0,9);
    } else {
        num = num.substr(0,9);
    }
    $(this).val(num);
}

function evaluandoRetencion(importeTotal){ 
    importRetencion=_MIN_RETENCION;    
    $("#DocumentoCompraNumeroRetencion").removeClass("notEmpty");
    $("#DocumentoCompraSumaRetencion").removeClass("notEmpty");
    if(importeTotal > importRetencion/$("#DocumentoCompraTipoCambio").val()-0 && cent == 1 && $('#DocumentoCompraEsAgenteRetension').val() == 'false') {            
       alerta('ADVERTENCIA: El Documento es afecto a retencion <br/>Ingrese el número de retención');
       $('#idReten').show();
       $('#textReten').show();
        _reindex_inputs();          
       $('#DocumentoCompraSumaRetencion').val( precision((importeTotal*(retencion /100)),2) );
       $("#DocumentoCompraNumeroRetencion").addClass("notEmpty");
       $("#DocumentoCompraSumaRetencion").addClass("notEmpty");                                                  
     }
    else if (($('#idReten, #textReten').is(':visible'))) {
        $('#idReten, #textReten').hide();            
        $('#DocumentoCompraSumaRetencion').val('');
        $('#DocumentoCompraNumeroRetencion').val('');          
    }         
    return true;
 }
 
 function hasDetails(value){
    $('form').unbind('submit.validarDetalle');	
    if(value){
            $('.opcDetail').show();
            $('.labelTotal').hide();		
            $('#TransaCodigo').removeClass('notEmpty');
            $('form').bind('submit.validarDetalle',validarDetalle);		
            validar();
    } else {
            $('.opcDetail').hide();
            $('.labelTotal').show();
            $('#TransaCodigo').addClass('notEmpty');
            validar();
    }
    return true;
}
 function validarRuc($ruc){
        $result = false;	
        valor = $ruc;
        if(valor!=''){
            if ( valor.length == 8 ){
      suma = 0;
      for (i=0; i < valor.length-1;i++){
        digito = valor.charAt(i) - '0';
        if ( i==0 ) suma += (digito*2);
        else suma += (digito*(valor.length-i));
      }
      resto = suma % 11;
      if ( resto == 1) resto = 11;
      if ( resto + ( valor.charAt( valor.length-1 ) - '0' ) == 11 ){
        $result = true;
      }
    } else if ( valor.length == 11 ){
      suma = 0;
      x = 6;      
      for (i=0; i<valor.length-1;i++){
        if ( i == 4 ) x = 8;
        digito = valor.charAt(i) - '0';
        x--;
        if ( i==0 ) suma += (digito*x);
        else suma += (digito*x);
      }
      resto = suma % 11;
      resto = 11 - resto;
      
      if ( resto >= 10) resto = resto - 10;
      if ( resto == valor.charAt( valor.length-1 ) - '0' ){
        $result = true;
      }      
    }  	
	}else{
		$result = true;	
	}
	
  return $result;
}

function calcularTotales(){
	var i;
	var Prefix;
	var valorTotal = 0;
	var impuestoTotal = 0;
	var percepcion = 0;
	var importeTotal = 0;

	$('div[id^=detalle]:visible').each(function(){
            valorTotal += parseFloat($(this).find('input[id*=valor_total]').val());
            impuestoTotal += parseFloat($(this).find('input[id*=impuesto]:first').val());
            percepcion += parseFloat($(this).find('input[id*=percepcion]').val());
            importeTotal += parseFloat($(this).find('input[id*=importe_total]').val());
        });
	
	$('#DocumentoCompraSumaValorTotal').val(precision(valorTotal));
	$('#DocumentoCompraSumaImpuesto').val(precision(impuestoTotal));
	$('#DocumentoCompraSumaPercepcion').val(precision(percepcion));
	$('#DocumentoCompraSumaImporteTotal').val(precision(importeTotal));
                
        evaluandoRetencion(importeTotal);  
}
